home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Borland Visual dBASE Professiona v7.0 / DATA1.CAB / Sample_dBASE / Fleet / Ftree.wfm < prev    next >
Text File  |  1997-11-20  |  10KB  |  366 lines

  1. //--------------------------------------------------------------
  2. //
  3. //  Ftree.wfm -- Tree View of the flight schedule.
  4. //
  5. //  This form builds a tree view of the flight schedule and 
  6. //  organizes the schedule by aircraft, flight and scheduled 
  7. //  dates. The tree view can show 1 day, 1 week or 1 month of 
  8. //  schedule information. The default view is 1 week.
  9. //
  10. //  Dependencies: SCHEDULE.DMD
  11. //                FLEET.CFM
  12. //                FLIGHT.ICO
  13. //                FLEET.ICO
  14. //                CLOCK.ICO
  15. //
  16. //  Visual dBASE Samples Group
  17. //
  18. //  $Revision:   1.11  $
  19. //
  20. //  Copyright (c) 1997, Borland International, Inc. 
  21. //  All rights reserved.
  22. //
  23. //--------------------------------------------------------------
  24.  
  25. SET TALK OFF
  26. ** END HEADER -- do not remove this line
  27. //
  28. // Generated on 11/02/97
  29. //
  30. parameter bModal
  31. local f
  32. f = new ftreeForm()
  33. if (bModal)
  34.    f.mdi = false // ensure not MDI
  35.    f.readModal()
  36. else
  37.    f.open()
  38. endif
  39.  
  40. class ftreeForm of FLEETCFORM from "FLEET.CFM"
  41.    with (this)
  42.       open = class::FORM_OPEN
  43.       scaleFontSize = 8
  44.       height = 18
  45.       left = 10
  46.       top = 1
  47.       width = 59
  48.       text = "Fleet Tree"
  49.    endwith
  50.  
  51.  
  52.    this.DMCONNECT = new DATAMODREF()
  53.    this.DMCONNECT.parent = this
  54.    with (this.DMCONNECT)
  55.       filename = "FCONNECT.DMD"
  56.       dataModClass = "FConnectDataModule"
  57.       share = 0
  58.       active = true
  59.       left = 0
  60.       top = 0
  61.    endwith
  62.  
  63.  
  64.    this.QFTREE = new QUERY()
  65.    this.QFTREE.parent = this
  66.    with (this.QFTREE)
  67.       left = -0.1429
  68.       top = -0.0455
  69.       database = form.DMCONNECT.ref.dbfleet
  70.       sql = "@ftree.sql"
  71.       active = true
  72.    endwith
  73.  
  74.  
  75.  
  76.  
  77.    this.TEXT1 = new TEXT(this)
  78.    with (this.TEXT1)
  79.       height = 5.5
  80.       left = 7
  81.       top = 7.7
  82.       width = 44.3333
  83.       metric = 0
  84.       colorNormal = "DARKBLUE/WHITE"
  85.       alignVertical = 1
  86.       alignHorizontal = 1
  87.       fontName = "MS Sans Serif"
  88.       fontSize = 18
  89.       text = "Refreshing Fleet Tree. Please stand by...."
  90.    endwith
  91.  
  92.  
  93.    this.FLEETTREE = new TREEVIEW(this)
  94.    with (this.FLEETTREE)
  95.       onLeftDblClick = class::FLEETTREE_ONLEFTDBLCLICK
  96.       onRightMouseUp = class::FLEETTREE_ONRIGHTMOUSEUP
  97.       height = 11.8182
  98.       left = 2.1429
  99.       top = 5.3182
  100.       width = 54
  101.       metric = 0
  102.       colorNormal = "DARKBLUE/WHITE"
  103.       fontName = "MS Sans Serif"
  104.       fontSize = 8
  105.       borderStyle = 7
  106.       allowEditLabels = false
  107.       allowEditTree = false
  108.       indent = 19
  109.       trackSelect = false
  110.       toolTips = false
  111.       imageScaleToFont = true
  112.       imageSize = 16
  113.    endwith
  114.  
  115.  
  116.    this.CONTAINER1 = new CONTAINER(this)
  117.    with (this.CONTAINER1)
  118.       transparent = false
  119.       left = 2
  120.       top = 0.45
  121.       width = 54
  122.       height = 4.5
  123.       metric = 0
  124.       colorNormal = "WHITE"
  125.       borderStyle = 7
  126.    endwith
  127.  
  128.  
  129.    this.CONTAINER1.SLIDESPAN = new SLIDER(this.CONTAINER1)
  130.    with (this.CONTAINER1.SLIDESPAN)
  131.       onChange = {;this.parent.buttonRefresh.enabled := true}
  132.       height = 2
  133.       left = 3
  134.       top = 1.5
  135.       width = 20
  136.       metric = 0
  137.       colorNormal = "DARKBLUE/WHITE"
  138.       borderStyle = 3
  139.       pageno = 0
  140.       value = 2
  141.       rangeMax = 3
  142.       rangeMin = 1
  143.       vertical = false
  144.       enableSelection = false
  145.       startSelection = 2
  146.       endSelection = -1
  147.    endwith
  148.  
  149.  
  150.    this.CONTAINER1.TEXTSPAN = new TEXT(this.CONTAINER1)
  151.    with (this.CONTAINER1.TEXTSPAN)
  152.       height = 1
  153.       left = 1.3333
  154.       top = 2.8
  155.       width = 25
  156.       metric = 0
  157.       colorNormal = "DARKBLUE/WHITE"
  158.       fontName = "MS Sans Serif"
  159.       fontSize = 8
  160.       text = "   Day         Week      Month"
  161.       pageno = 0
  162.    endwith
  163.  
  164.  
  165.    this.CONTAINER1.LABELSPAN = new TEXT(this.CONTAINER1)
  166.    with (this.CONTAINER1.LABELSPAN)
  167.       height = 1
  168.       left = 3
  169.       top = 0.4
  170.       width = 20
  171.       metric = 0
  172.       colorNormal = "DARKBLUE/WHITE"
  173.       alignVertical = 2
  174.       fontName = "MS Sans Serif"
  175.       fontSize = 8
  176.       text = "View schedule for:"
  177.       pageno = 0
  178.    endwith
  179.  
  180.  
  181.    this.CONTAINER1.LABELSTART = new TEXT(this.CONTAINER1)
  182.    with (this.CONTAINER1.LABELSTART)
  183.       height = 1
  184.       left = 24
  185.       top = 0.7727
  186.       width = 12
  187.       metric = 0
  188.       colorNormal = "DARKBLUE/WHITE"
  189.       alignVertical = 1
  190.       alignHorizontal = 2
  191.       fontName = "MS Sans Serif"
  192.       fontSize = 8
  193.       text = "Starting on:"
  194.       pageno = 0
  195.    endwith
  196.  
  197.  
  198.    this.CONTAINER1.BUTTONREFRESH = new PUSHBUTTON(this.CONTAINER1)
  199.    with (this.CONTAINER1.BUTTONREFRESH)
  200.       onClick = class::BUTTONREFRESH_ONCLICK
  201.       enabled = false
  202.       height = 1.2
  203.       left = 30
  204.       top = 2.25
  205.       width = 20
  206.       text = "Refresh Flight Tree"
  207.       metric = 0
  208.       fontName = "MS Sans Serif"
  209.       fontSize = 8
  210.       group = true
  211.       colorNormal = "BtnText/BtnFace"
  212.       pageno = 0
  213.       value = false
  214.    endwith
  215.  
  216.  
  217.    this.CONTAINER1.SPINSTART = new SPINBOX(this.CONTAINER1)
  218.    with (this.CONTAINER1.SPINSTART)
  219.       onChange = {; this.parent.buttonRefresh.enabled := true}
  220.       onOpen = {;this.borderStyle := 0}
  221.       height = 1
  222.       left = 37.875
  223.       top = 0.75
  224.       width = 12
  225.       metric = 0
  226.       colorHighLight = ""
  227.       rangeMax = 100
  228.       rangeMin = 1
  229.       fontName = "MS Sans Serif"
  230.       fontSize = 8
  231.       value = {01/01/98}
  232.       validRequired = true
  233.       pageno = 0
  234.       borderStyle = 7
  235.    endwith
  236.  
  237.  
  238.    // {Linked Method} form.container1.buttonrefresh.onClick
  239.    function BUTTONREFRESH_onClick
  240.         this.form.fleetTree.visible := false
  241.         this.form.fleetTree.releaseAllChildren()
  242.         class::growTree( this.form )        
  243.         this.form.fleetTree.visible := true      
  244.         this.enabled := false
  245.    return true
  246.  
  247.    // {Linked Method} form.fleettree.onLeftDblClick
  248.    function FLEETTREE_onLeftDblClick(flags, col, row)
  249.       local item, bRead
  250.       item  = this.selected
  251.       bRead = false
  252.       if ( item.text.subString(0,8) == "Schedule" )
  253.          if ( TYPE("this.form.app") == "O" )
  254.             bRead := this.form.app.openScheduleAsDialog( item )
  255.          endif
  256.       endif
  257.    return ( bRead )
  258.  
  259.    // {Linked Method} form.fleettree.onRightMouseUp
  260.    function FLEETTREE_onRightMouseUp(flags, col, row)    
  261.        local bSchedule
  262.        bSchedule = this.selected.text.subString(0,8) == "Schedule" 
  263.        if ( bSchedule )
  264.           this.shortCut.left := this.left + col
  265.           this.shortCut.top  := this.top  + row
  266.           this.shortCut.open() 
  267.        endif
  268.    return ( bSchedule )
  269.  
  270.    // {Linked Method} form.open
  271.    function Form_Open
  272.       if ( TYPE("this.app") == "O" )
  273.          this.fleetTree.shortCut = new ftreePopup( this, "shortcut" )
  274.       else
  275.          this.fleetTree.onRightMouseUp := null
  276.       endif
  277.       class::growTree( this )
  278.    return FTREEFORM::Open()
  279.  
  280.    function growTree( thisForm )
  281.       local rFTree
  282.       local itemAir,  itemFlight,  itemSc
  283.       local nItemAir, nItemFlight, nItemSc
  284.       local nFlight, sStart, sEnd, d    
  285.  
  286.       nFlight     = null
  287.       nAircraft   = null
  288.       nItemAir    = 0
  289.       nItemFlight = 0
  290.       nItemSc     = 0
  291.  
  292.  
  293.       thisForm.qFTree.requery()
  294.       rFTree = thisForm.qFtree.rowset
  295.       fFTree = rFTree.fields
  296.  
  297.       d = new Date()
  298.       d.setDate(  thisForm.container1.spinStart.value.getDate() )
  299.       d.setMonth( thisForm.container1.spinStart.value.getMonth() )
  300.       d.setYear(  thisForm.container1.spinStart.value.getYear() )
  301.  
  302.       sStart = "'" + DTOC( d ) + "'"
  303.       do case         
  304.          case ( thisForm.container1.slideSpan.value == 2 ) // week
  305.               d.setDate( d.getDate() + 7 )            
  306.          case ( thisForm.container1.slideSpan.value == 3 ) // month
  307.               d.setMonth( d.getMonth() + 1 ) 
  308.       endcase
  309.       sEnd   = "'" + DTOC( d ) + "'"
  310.  
  311.       rFTree.filter := '"Flight Date" >= ' + sStart + " AND " + ;
  312.                        '"Flight Date" <= ' + sEnd  
  313.     
  314.       rFTree.first()
  315.          
  316.       do while ( not rFTree.endOfSet )
  317.  
  318.          if ( nAircraft <> fFTree["Aircraft ID"].value )
  319.             nAircraft := fFTree["Aircraft ID"].value
  320.             itemAir = new TreeItem( thisForm.fleetTree, ;
  321.                       "A" + LTRIM(STR( nItemAir ) ) )
  322.             nItemAir++
  323.             with ( itemAir )
  324.                 text  := "Aircraft: " + ;
  325.                          LTRIM( STR( fFTree["Aircraft ID"].value ) ) + ;
  326.                           " - " +    fFTree["Make"].value + ;
  327.                             " " +    fFTree["Model"].value 
  328.                 image         := "FILENAME FLEET.ICO"
  329.                 selectedImage := "FILENAME FLEET.ICO"
  330.             endwith
  331.          endif
  332.       
  333.          if ( nFlight <> fFTree["Flight ID"].value ) 
  334.             nFlight := fFTree["Flight ID"].value 
  335.             itemFlight = new TreeItem( itemAir, ;
  336.                          "F" + LTRIM( STR( nItemFlight ) ) )
  337.             nItemFlight++
  338.             with ( itemFlight )
  339.                  text := "Flight: " + LTRIM( STR( nFlight ) ) + ;
  340.                          " - "  + fFTree["From ID"].value + ;
  341.                          " to " + fFTree["To ID"].value
  342.                  image         := "FILENAME FLIGHT.ICO"
  343.                  selectedImage := "FILENAME FLIGHT.ICO"                    
  344.             endwith
  345.          endif
  346.  
  347.          itemSc = new TreeItem( itemFlight, ;
  348.                   "S" + LTRIM( STR( nItemSc ) ) )
  349.          nItemSc++
  350.          itemSc.sFlightDate = "'" + DTOC( fFTree["Flight Date"].value ) + "'"
  351.          itemSc.sFlightID   = STR( fFTree["Flight ID"].value )
  352.          itemSc.sAircraftID = STR( fFTree["Aircraft ID"].value )
  353.          with ( itemSc )
  354.             text := "Scheduled: " + ;
  355.                     fFTree["Flight Date"].value + " " + ;
  356.                     fFTree["Departs"].value
  357.             image         := "FILENAME CLOCK.ICO"
  358.             selectedImage := "FILENAME CLOCK.ICO"
  359.          endwith
  360.          rFTree.next()  
  361.       enddo
  362.  
  363.    return ( nItemAir + nItemFlight + nItemSc )
  364.       
  365. endclass
  366.